<?php
/**
 * jishupu-cms
 * @Author:技术铺<jishupu@qq.com>
 * @Date: 2022/3/16
 */

namespace App\Services;

use Illuminate\Cache\RedisLock;
use Illuminate\Support\Facades\Redis;

/**
 * redis服务
 *
 * Class RedisService
 * @package App\Services
 */
class RedisService extends Redis
{

    /**
     * 锁服务
     * @param $key
     * @param int $seconds // 过期时间 10s
     * @param null $owner // 默认
     * @return RedisLock
     * 例：
     * $lock = RedisService::lock('info1_hits_lock', 10);
     * if ($lock->get()) {
     *      // 一些操作
     *      // 释放锁
     *      $lock->release();
     * }
     * 更多参考：与 "缓存系统 > 原子锁" 使用方法类同
     */
    static function lock($key, $seconds = 10, $owner = null): RedisLock
    {
        return new RedisLock(self::connection(), $key, $seconds, $owner);
    }

}
